Network devices, such as routers, hubs, switches, and servers, often implement virtual environments. In the instance of data servers, any given data server may include physical resources, such as processors, memory and storage space. Each of these virtual machines receives a separate portion of the underlying physical resources in which to execute. The virtual environment maintains these portions in a manner that virtual machines appear to one another as separate network devices, hence the name “virtual machines.” Acting as standalone machines or network devices, each of these virtual machines may act as a separate network device. For example, one virtual machine may operate as a first data server while another as a second data server.
Generally, the virtual environment is managed and monitored by what is commonly referred to as a “hypervisor” or a “virtualization manager.” The hypervisor forms a virtualization layer that abstracts the physical resources into the multiple virtual machines and allows independent operating systems to execute for each of the virtual machines. In other words, the hypervisor forms the partitions of physical resources and assigns these partitions to each of the virtual machines for their independent allocation and use by the corresponding operating system. The hypervisor usually performs a form of static resource allocation, meaning that an administrator or other user defines the partitions of physical resources for each of the virtual machines and the hypervisor then abstracts the various physical resources into the defined partitions. The virtual machines then execute within their respective physical resource partition as if the virtual machine is a stand-alone or separate network device. The hypervisor maintains the separation between these partitions, managing conflicts and other issues that arise when two or more virtual machines attempt to utilize the same physical resource.